package com.ungs.dao.impl;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.criterion.Restrictions;

import com.ungs.dao.IncidenteDAO;
import com.ungs.entities.Incidente;
import com.ungs.entities.SolicitudCompra;

public class IncidenteDAOImpl extends EntidadDAOImpl<Incidente> implements
		IncidenteDAO {

	@SuppressWarnings("unchecked")
	public List<Incidente> getAllIncidenteBySolicitudCompra(
			SolicitudCompra solicitudCompra) throws HibernateException {
		ArrayList<Incidente> incidentes = new ArrayList<Incidente>();
		List<Incidente> incidenteList = new ArrayList<Incidente>();

		logger.info("Obteniendo todos los incidentes por solicitud");
		try {
			iniciaConexion();
			Criteria criteria = getSession().createCriteria(Incidente.class);
			Criteria critSC = criteria.createCriteria("solicitudCompra");
			critSC.add(Restrictions.like("codigo", solicitudCompra.getCodigo()
					+ "%"));

			incidenteList = (List<Incidente>) criteria.list();
			for (Incidente incidente : incidenteList) {
				incidentes.add(incidente);
			}

		} catch (HibernateException he) {
			logger.debug("Error al traer los incidentes: " + Incidente.class
					+ "DAO");
			manejaExcepcion(he);
			throw he;
		} finally {
			getSession().close();
		}
		return incidentes;
	}

}
